//1. 加载 express 模块
const express=require('express');
//2. 创建服务器对象
const app=express();
//3. 开启服务器
app.listen(3000,()=>{
    console.log('已启动...');
})
// 加载 path模块
const path=require('path');
const fs=require('fs');
const url=require('url');
//托管静态资源
app.use('/assets',express.static(path.join(__dirname,'view','assets')));
app.use('/uploads', express.static(path.join(__dirname,'view','uploads')));
app.use('/upload',express.static('./upload'));
//加载并配置模板引擎
const template=require('express-art-template');
app.engine('html',template);
// 加载body-parser模块并注册为中间件
const bp=require('body-parser');
app.use(bp.urlencoded({extended:false}));
// 加载express-session模块，并注册为中间件
const session=require('express-session');
app.use(session({
    secret:'yrfndt321eg',
    resave:false,
    saveUninitialized:false
}))
// 将检测session的中间件进行注册
app.use(checkSession);
//将 __dirname对应路径挂载到global对象向下的rootPath变量中
global.rootPath=__dirname;
// 读取router目录下所有的路由文件，再循环加载模块并注册为中间件
fs.readdir(path.join(__dirname,'router'),(err,files)=>{
    // 循环files中保存的路由文件名
    for (let i=0;i<files.length;i++){
        // 每取出一个路由文件都加载并注册为中间件
        let router=require('./router/'+files[i]);
       
        app.use(router); 
    }
})
const api=require('./api.js');
app.use(api);
// 声明检测session的中间件函数
function checkSession(req,res,next){
    const urlArr=['/admin/login','/admin/checkLogin'];
    if(urlArr.includes(req.url)){
        return next();
    }
    if(req.session.isLogin !=true){
        // 跳转回登录页
        return res.redirect('/admin/login');
    }
    next();
}